﻿#pragma once
#ifndef CARDPANEL_H
#define CARDPANEL_H

#include <QWidget>

#include "card.h"
#include "player.h"
//扑克牌窗口类
class CardPanel : public QWidget {
	Q_OBJECT
public:
	explicit CardPanel(QWidget* parent = nullptr);

	// 设置获取图片函数
	void setImage(const QPixmap& front, const QPixmap& back);

	// 获取当前显示图片
	QPixmap getImage();

	// 设置扑克牌显示面
	void setFrontSide(bool flag);
	bool isFrontSide();

	// 记录窗口是否被选中了
	void setSeclected(bool flag);
	bool isSelected();

	// 扑克牌的花色以及点数
	void setCard(const Card& card);
	Card getCard();  //获取card实例

	// 扑克牌的所有者
	void setOwner(Player* player);
	Player* getOwner();

	// 模拟扑克牌的点击事件，只是模拟，并不能实现点击，真正的点击是mousePressEvent事件
	void clicked();

protected:
	void paintEvent(QPaintEvent* event);  //画图事件来显示图片 由update()触发

	// 鼠标按压事件，按压会发出信号
	// 发出的信号是，鼠标左键按压还是右键按压，只有左键按压才能有槽函数
	void mousePressEvent(QMouseEvent* event);

signals:
	// 发射信号，说明是被左键点击了
	void cardSelected(Qt::MouseButton button);

private:
	QPixmap m_front;        //正面
	QPixmap m_back;         //反面
	bool m_isfront = true;  //当前显示面是正面吗？
	bool m_isSelect = false; // 是否被选中？
	Card m_card;            //卡牌
	Player* m_owner = nullptr;  //所有者
};

#endif  // CARDPANEL_H
